package rn;

import classes.AusenciaTipo;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author roberta.m.carvalho
 */
public class AusenciaTipoTableModel extends AbstractTableModel {

    private static final int COL_NOME = 0;
    private List<AusenciaTipo> valores;

    public AusenciaTipoTableModel() {
    }

    //Esse é um construtor, que recebe a nossa lista
    public AusenciaTipoTableModel(List<AusenciaTipo> valores) {
        this.valores = new ArrayList<AusenciaTipo>(valores);
    }

    @Override
    public int getRowCount() {
        //Quantas linhas tem sua tabela? Uma para cada item da lista.  
        return valores.size();
    }

    @Override
    public int getColumnCount() {
        //Quantas colunas tem a tabela? Nesse exemplo, só 2.  
        return 1;
    }

    @Override
    public String getColumnName(int column) {
        //Qual é o nome das nossas colunas?  
        if (column == COL_NOME) {
            return "Nome";
        }
        return ""; //Nunca deve ocorrer  
    }

    @Override
    public Object getValueAt(int row, int column) {
        //Precisamos retornar o valor da coluna column e da linha row.  
        AusenciaTipo at = valores.get(row);
        if (column == COL_NOME) {
            return at.getNome();
        }
        return ""; //Nunca deve ocorrer  
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        AusenciaTipo at = valores.get(rowIndex);
        //Vamos alterar o valor da coluna columnIndex na linha rowIndex com o valor aValue passado no parâmetro.  
        //Note que vc poderia alterar 2 campos ao invés de um só.  
        if (columnIndex == COL_NOME) {
            at.setNome(aValue.toString());
        }
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        //Qual a classe das nossas colunas? Como estamos exibindo texto, é string.  
        return String.class;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //Indicamos se a célula da rowIndex e da columnIndex é editável. Nossa tabela toda é.  
        return true;
    }
    //Já que esse tableModel é de livros, vamos fazer um get que retorne um livro inteiro.  
    //Isso elimina a necessidade de chamar o getValueAt() nas telas.   

    public AusenciaTipo get(int row) {
        return valores.get(row);
    }
}